import useSessionStorage from './session-storage'

// 定义普通用户登录信息的session key
const SESSION_KEY_LOGIN_USER = 'SESSION_KEY_LOGIN_USER'
// 定义管理员登录信息的session key
const SESSION_KEY_LOGIN_ADMIN = 'SESSION_KEY_LOGIN_ADMIN'
// 定义订单id信息的session key
const SESSION_ORDER_ID_KEY = 'SESSION_ORDER_ID_KEY'

// 定义工具函数
const useTool = () => {
  // 获取sessionStorage的get和set方法
  const { get, set } = useSessionStorage()

  // 设置普通用户登录信息
  const setLoginUser = (loginUser) => {
    set(SESSION_KEY_LOGIN_USER, loginUser)
  }

  // 获取普通用户登录信息
  const getLoginUser = () => get(SESSION_KEY_LOGIN_USER) || null

  // 设置管理员登录信息
  const setLoginAdmin = (loginUser) => {
    set(SESSION_KEY_LOGIN_ADMIN, loginUser)
  }

  // 获取管理员登录信息
  const getLoginAdmin = () => get(SESSION_KEY_LOGIN_ADMIN) || null

  // 设置订单id信息
  const setOrderId = (orderId) => {
    set(SESSION_ORDER_ID_KEY, orderId)
  }

  // 获取订单id信息
  const getOrderId = () => get(SESSION_ORDER_ID_KEY) || {}

  const isEmpty = (obj) => {
    // 判断字符串是否为空
    if (typeof obj === 'string') {
      return !obj || obj.replace(/\s+/g, '') === ''
    }
    // 判断数组是否为空
    if (Array.isArray(obj)) {
      return obj.length === 0
    }
    // 判断对象是否为空
    if (typeof obj === 'object') {
      // 空对象检查，排除 null 和 undefined
      return !obj || Object.keys(obj).length === 0
    }
    return false // 其他类型（如数字、布尔值）直接返回 false，表示不为空
  }
  // 判断对象是否不为空
  const isNotEmpty = (obj) => !isEmpty(obj)

  // 返回工具函数
  return {
    setLoginUser,
    getLoginUser,
    setLoginAdmin,
    getLoginAdmin,
    setOrderId,
    getOrderId,
    isEmpty,
    isNotEmpty
  }
}

// 导出工具函数
export default useTool
